An efficient IT architecture strives to build decoupled, reproducible, highly available systems that streamline business operations. Incremental improvement is one strategy used to deliver functionality to an organization in a timely manner. The caveat to this approach is that no one seems to be able to effectively accomplish the iterations outside a small sliver of the overall infrastructure. This is due to lack of reproducibility and testability of an entire architecture. If the systems cannot be reproduced in any environment, they cannot be effectively iterated upon. Once modified, if those system changes cannot be efficiently tested for regression, the cost of iterative changes spirals out of control. As such, a distributable, automated provisioning and configuration framework is necessary to reproduce systems in any environment.
Furthermore, agile development is a concept that focuses on an iterative refinement and delivery. All too often agile development also drives quick development changes into production that are not maintainable over the entire lifecycle. This causes an exponential number of unmaintainable systems to be introduced that eventually cripple the infrastructure's ability to scale. Among other factors that cause a lack of focus on the entire lifecycle is the inability to reproduce and test entire infrastructures. The output of this oversight leads to scenarios in which migrating applications between segregated and controlled environments yield unexpected test failures, invalidation of quality assurance efforts, data corruption, etc.
Therefore a need exists for a system that can replicate and built itself automatically in any environment. The side-effect of reproducing any system in an infrastructure is that systems can be recovered using the same framework—this not only drastically improves tactical resilience but also longer term data continuity and disaster recovery strategies.